1. Field of the Invention
The present invention relates generally to the field of data communications for personal computers (PCs), and in particular to a system for ensuring that only a single instance of a dynamic executable module (DEM) resides on a network device.
2. Related Art
With the increasing popularity of the Internet, and particularly the World-Wide Web ("the Web"), a variety of data processing tools have been developed to assist users, Internet Service Providers (ISPs) and content providers in exploiting the vast capabilities of this relatively-new network environment. Among these tools are utilities for developing so-called dynamic executable modules, examples of which are Java, JavaScript, VBScript and JScript. Dynamic executable modules are essentially self-contained programs which may be embedded in a data object transmitted to a network device, such as a client computer, for automatic execution upon receipt.
One particularly advantageous use for such dynamic executable modules is in connection with systems for dynamically transcoding network content. In such systems, as described further below, a network proxy, a transcoding server or some similar device may be configured to serve as an intermediary between a plurality of client devices and an external network such as the Internet. The intermediary device intercepts all messages transmitted between the client devices and the external network, and may be configured to transcode network content prior to transmitting it to a client device. In this context, the term "transcode" refers to virtually any manipulation of data, including deletion, addition, modification, compression and scaling. In such a system, dynamic executable modules may be used to obtain user preference information affecting the manner in which a variety of available transcoding services operate. For example, through interactions with a dynamic executable module the user of a client machine may specify that content downloaded from the Internet should be compressed in a manner which reduces user-visible latency. This is, of course, only one example of the seemingly endless uses for dynamic executable modules.
A problem which may arise with respect to the use of dynamic executable modules is that under certain circumstances it may be possible for multiple instances of the same dynamic executable module to be downloaded to and/or execute on a single client device. For example, according to certain implementations of dynamic transcoding systems, a dynamic executable module may be embedded in each Web page downloaded to a client device through a network proxy or a transcoding server. In such a case, a number of different conditions may result in multiple instances of the same dynamic executable module inadvertently being loaded onto the client machine, including (1) browsing a Web page that includes HTML-FRAMES (a facility of the HyperText Markup Language); (2) browsing a Web page which is configured to itself launch another instance of the client machine's browser to browse a different URL (Uniform Resource Locator); and (3) executing multiple instances of a browser (or a number of different browsers) on the client machine, each of which generate requests for data objects that are serviced by the same remote proxy. In all of these circumstances, the remote proxy may embed the same dynamic executable module into every page that is requested, resulting in multiple instances of the dynamic executable module being loaded onto the client machine. At best, downloading multiple instances of the same dynamic executable module is inefficient and/or wasteful; at worst, such multiple instances may cause processing errors at the client and/or the remote proxy.
In view of the increasing use of dynamic executable modules and the risks of multiple instances described above, there is a need for a system capable of ensuring that only a single instance of any given dynamic executable module is downloaded to and/or executed by a network device.